class PostModel {
  final String id;
  final String title;
  final String content;
  final String authorName;
  final String authorAvatar;
  final List<String> images; // 主要图片（commentImages）
  final List<String> shoppingImages; // 购物小票图片（shoppingImages）
  final int likeCount;
  final int commentCount;
  final String timeAgo;
  final PostType type;
  final String authorSignature; // 添加用户个性签名字段
  final String paymentType; // 添加消费方式字段："我买单" 或 "AA"
  final int? originalCommentId; // 原始评论ID（用于API调用）
  final int? authorId; // 发布者ID（用于好友关系检查）
  
  // 🔥 时间相关字段（与MyApplication2保持一致）
  final String? activityPublishTime; // 活动开始时间（ISO 8601格式）- 替代 publishTime
  final String? publishTime; // 发布时间（ISO 8601格式）- 保持兼容性
  final int? timestamp; // 时间戳（minutes_ago 或 ID等）
  final ActivityExtraData? extraData; // 🔥 新增：额外数据，包含结束时间等
  
  // 活动专用字段
  final int? maxParticipants; // 最大参与人数
  final int? currentParticipants; // 当前参与人数
  final String? location; // 活动地点
  final double? latitude; // 活动纬度
  final double? longitude; // 活动经度
  final List<String>? activityType; // 活动类型
  final List<String>? activityTags; // 活动标签
  final String? gender; // 新增：用户性别
  final List<String>? activityRestriction; // 新增：活动性别限制

  PostModel({
    required this.id,
    required this.title,
    required this.content,
    required this.authorName,
    required this.authorAvatar,
    required this.images,
    this.shoppingImages = const [], // 默认为空数组
    required this.likeCount,
    required this.commentCount,
    required this.timeAgo,
    required this.type,
    this.authorSignature = "这个人很懒，什么都没留下", // 默认签名
    this.paymentType = "我买单", // 默认为我买单
    this.originalCommentId, // 原始评论ID（可选）
    this.authorId, // 发布者ID（可选）
    // 🔥 时间相关字段（可选）
    this.activityPublishTime, // 活动开始时间（可选）
    this.publishTime, // 发布时间（可选）- 保持兼容性
    this.timestamp, // 时间戳（可选）
    this.extraData, // 🔥 额外数据（可选）
    // 活动专用字段（可选）
    this.maxParticipants,
    this.currentParticipants,
    this.location,
    this.latitude,
    this.longitude,
    this.activityType,
    this.activityTags,
    this.gender, // 在构造函数中添加gender
    this.activityRestriction, // 在构造函数中添加activityRestriction
  });
}

enum PostType {
  comment,    // 评论
  activity,   // 活动
  myPublish,  // 我的发布
}

/// 🔥 活动额外数据类（与MyApplication2的ExtraDataDTO保持一致）
class ActivityExtraData {
  final String? activityEndTime; // 活动结束时间（ISO 8601格式）

  const ActivityExtraData({
    this.activityEndTime,
  });

  /// 从JSON创建ActivityExtraData实例
  factory ActivityExtraData.fromJson(Map<String, dynamic> json) {
    return ActivityExtraData(
      activityEndTime: json['activityEndTime'] as String?,
    );
  }

  /// 转换为JSON
  Map<String, dynamic> toJson() {
    return {
      if (activityEndTime != null) 'activityEndTime': activityEndTime,
    };
  }
}